﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for FileHelper
/// </summary>
public class FileHelper
{
	public FileHelper()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public class OrtakParametreler
    {
        public static string VeritabaniAdi
        {
            get
            {
                return Convert.ToString(System.Web.HttpContext.Current.Session["VeritabaniAdi"]);
            }
            set
            {
                HttpContext.Current.Session["VeritabaniAdi"] = value;
            }
        }
        public static string SchemaAdi
        {
            get
            {
                return Convert.ToString(System.Web.HttpContext.Current.Session["SchemaAdi"]);
            }
            set
            {
                HttpContext.Current.Session["SchemaAdi"] = value;
            }
        }
        public static string TabloAdi
        {
            get
            {
                return Convert.ToString(System.Web.HttpContext.Current.Session["TabloAdi"]);
            }
            set
            {
                HttpContext.Current.Session["TabloAdi"] = value;
            }
        }
        public static string PrimaryKeyAlanAdi
        {
            get
            {
                return Convert.ToString(System.Web.HttpContext.Current.Session["PrimaryKeyAlanAdi"]);
            }
            set
            {
                HttpContext.Current.Session["PrimaryKeyAlanAdi"] = value;
            }
        }
        public static string ForeignKeyAlanAdi
        {
            get
            {
                return Convert.ToString(System.Web.HttpContext.Current.Session["ForeignKeyAlanAdi"]);
            }
            set
            {
                HttpContext.Current.Session["ForeignKeyAlanAdi"] = value;
            }
        }
        public static string ForeignKeyDegeri
        {
            get
            {
                return Convert.ToString(System.Web.HttpContext.Current.Session["ForeignKeyDegeri"]);
            }
            set
            {
                HttpContext.Current.Session["ForeignKeyDegeri"] = value;
            }
        }
        public static bool GridPositionAbsolute
        {
            get
            {
                return Convert.ToBoolean(System.Web.HttpContext.Current.Session["GridPositionAbsolute"]);
            }
            set
            {
                HttpContext.Current.Session["GridPositionAbsolute"] = value;
            }
        }
    }

    /// <summary>
    /// Dosya yükleme sayfası için gerekli url'nin alındığı ve gerekli parametrelerin verildiği sınıfır. OrtakParametreler sınıfından türetilir.
    /// </summary>
    public class DosyaYukle : OrtakParametreler
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pPostbackParentWhenClosed">Popup'ı açan sayfa, popup kapandıktan sonra refresh edilecek ise true, edilmeyecek ise false değeri verilir</param>
        /// <returns></returns>
        public static string DosyaYuklemeSayfasi(bool pPostbackParentWhenClosed)
        {
            string dosyaUrl = @"/GenelKullanimSayfalari/DosyaYukle.aspx";
            if (pPostbackParentWhenClosed) dosyaUrl += "?PostbackParent=true"; else dosyaUrl += "?PostbackParent=false";
            return dosyaUrl;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="pPostbackParentWhenClosed">Popup'ı açan sayfa, popup kapandıktan sonra refresh edilecek ise true, edilmeyecek ise false değeri verilir</param>
        /// <param name="pForeignKeyDegeri">Veri kaydının yapıldığı (size ait) tablonun, kayıt işleminden sonra oluşan FK değeri ve ara tablonun FK değeri.</param>
        /// <returns></returns>
        public static string DosyaYuklemeSayfasi(bool pPostbackParentWhenClosed, string pForeignKeyDegeri)
        {
            string dosyaUrl = @"/GenelKullanimSayfalari/DosyaYukle.aspx";
            if (pPostbackParentWhenClosed) dosyaUrl += "?PostbackParent=true"; else dosyaUrl += "?PostbackParent=false";
            dosyaUrl += "&FK=" + EncryptionHelper.Encrypt(pForeignKeyDegeri);
            return dosyaUrl;
        }

        /// <summary>
        /// Yüklenebilecek maksimum dosya boyutu Byte cinsinden verilir. Bu değer verilmediğinde, öntanımlı olarak 512000 byte (500 KB) kabuledilir.
        /// </summary>
        public static int MaksimumDosyaBoyutu_Byte
        {
            get
            {
                return Convert.ToInt32(System.Web.HttpContext.Current.Session["MaksimumDosyaBoyutu_Byte"]);
            }
            set
            {
                HttpContext.Current.Session["MaksimumDosyaBoyutu_Byte"] = value;
            }
        }

        /// <summary>
        /// Hangi dosya türlerinin yüklenebileceği bu özellik ile List tipinden verilebilir. Örnek: List<string> dosyaTipleri = new List<string>(); dosyaTipleri.Add("png"); dosyaTipleri.Add("jpg"); dosyaTipleri.Add("docx"); IzinVerilenDosyaUzantilari = dosyaTipleri;
        /// </summary>
        public static List<string> IzinVerilenDosyaUzantilari
        {
            get
            {
                return (List<string>)(System.Web.HttpContext.Current.Session["IzinVerilenDosyaUzantilari"]);
            }
            set
            {
                HttpContext.Current.Session["IzinVerilenDosyaUzantilari"] = value;
            }
        }

        public static bool SilTusunuSakla
        {
            get
            {
                return Convert.ToBoolean(System.Web.HttpContext.Current.Session["SilTusunuSaklaYukle"]);
            }
            set
            {
                HttpContext.Current.Session["SilTusunuSaklaYukle"] = value;
            }
        }

        public static bool IndirTusunuSakla
        {
            get
            {
                return Convert.ToBoolean(System.Web.HttpContext.Current.Session["IndirTusunuSaklaYukle"]);
            }
            set
            {
                HttpContext.Current.Session["IndirTusunuSaklaYukle"] = value;
            }
        }

        public static Guid EkDosyaKey
        {
            get
            {
                if (System.Web.HttpContext.Current.Session["EkDosyaKeyYukle"] == null)
                    return new Guid();
                else
                    return (Guid)System.Web.HttpContext.Current.Session["EkDosyaKeyYukle"];
            }
            set
            {
                HttpContext.Current.Session["EkDosyaKeyYukle"] = value;
            }
        }
    }

    /// <summary>
    /// Dosya indirme sayfası için gerekli url'nin alındığı ve gerekli parametrelerin verildiği sınıftır. OrtakParametreler sınıfından türetilir.
    /// </summary>
    public class DosyaIndir : OrtakParametreler
    {
        public static string DosyaIndirmeSayfasi()
        {
            string dosyaUrl = @"/GenelKullanimSayfalari/DosyaIndir.aspx";
            return dosyaUrl;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="pForeignKeyDegeri">Veri kaydının yapıldığı (size ait) tablonun, kayıt işleminden sonra oluşan FK değeri ve ara tablonun FK değeri.</param>
        /// <returns></returns>
        public static string DosyaIndirmeSayfasi(string pForeignKeyDegeri)
        {
            string dosyaUrl = @"/GenelKullanimSayfalari/DosyaIndir.aspx";
            dosyaUrl += "?FK=" + EncryptionHelper.Encrypt(pForeignKeyDegeri);
            return dosyaUrl;
        }

        public static bool SilTusunuSakla
        {
            get
            {
                return Convert.ToBoolean(System.Web.HttpContext.Current.Session["SilTusunuSaklaIndir"]);
            }
            set
            {
                HttpContext.Current.Session["SilTusunuSaklaIndir"] = value;
            }
        }
    }

    /// <summary>
    /// Dosya indirmek için gereken url'yi almakta kullanılan sınıf
    /// </summary>
    public class DosyaIndirSanal
    {
        public static string DosyaIndirmeSanalSayfasi(Guid EkDosyaKey)
        {
            string dosyaUrl = @"/GenelKullanimSayfalari/DosyaIndirSanal.aspx" + "?PK=" + EkDosyaKey.ToString();
            return dosyaUrl;
        }
        public static string DosyaIndirmeSanalSayfasi(Guid EkDosyaKey, bool pFotografOlarakGoster)
        {
            string dosyaUrl = @"/GenelKullanimSayfalari/DosyaIndirSanal.aspx" + "?PK=" + EkDosyaKey.ToString();
            if (pFotografOlarakGoster) dosyaUrl += "&Img=1";
            return dosyaUrl;
        }
    }
}
